package org.example;

/**
 * @author wf
 * @description 单例
 */
public class SingletoTest {

    public static void main(String[] args) {
        SingletonLazy instance = SingletonLazy.getInstance();
        SingletonLazy instance1 = SingletonLazy.getInstance();
        System.out.println(instance == instance1);
        System.out.println("hashCode"+instance.hashCode());
        System.out.println("hashCode1"+instance1.hashCode());
    }

}

class SingletonLazy {
    // 私有静态变量，用于存储单例对象
    // 注意：这里不使用 final 关键字，因为实例是在方法中创建的
    private static SingletonLazy instance;

    // 私有构造函数，防止外部通过new创建实例
    private SingletonLazy() {}

    // 提供一个全局的公共访问点
    // 使用 synchronized 关键字确保线程安全
    // 但这会导致每次调用 getInstance() 时都进行同步，效率较低
    public static synchronized SingletonLazy getInstance() {
        if (instance == null) {
            instance = new SingletonLazy();
        }
        return instance;
    }
}